package com.authstr.auth.utils;

import com.authstr.basic.util.SpringUtils;
import net.sf.ehcache.Cache;
import org.springframework.cache.ehcache.EhCacheCacheManager;

import java.util.List;

/**
 * 用于对ehcache进行一些操作
 */
public class EhcacheUntil {

    /**
     * 获取缓存管理器
     * @return
     */
    public static EhCacheCacheManager getCacheManager(){
        return (EhCacheCacheManager)SpringUtils.getBean("ehCacheCacheManager");
    }

    /**
     * 获取缓存
     * @param cache_name
     * @return
     */
    public static Cache getCache(String cache_name){
        return getCacheManager().getCacheManager().getCache(cache_name);
    }

    /**
     * 移除指定key的缓存
     * @param cache_name
     * @param cache_key
     */
    public static void removeKeyCache(String cache_name,String cache_key){
        getCache(cache_name).remove(cache_key);
    }

    /**
     * 移除所有缓存
     * @param cache_name
     */
    public static void removeAllCache(String cache_name){
        getCache(cache_name).removeAll();
    }

    /**
     * 移除指定前缀key的缓存
     * @param cache_name
     * @param cache_key_prefix
     */
    public static void removeKeyPrefixCache(String cache_name,String cache_key_prefix){
        Cache cache=getCache(cache_name);
        List<String> keys= cache.getKeys();
        for(int i=0;i<keys.size();i++){
            String key=keys.get(i);
            if(key.startsWith(cache_key_prefix)){
                cache.remove(key);
            }
        }
    }

}
